# coding:utf-8
import threading
amount = 0
def changeValue(x):
    global amount
    amount = amount + x
    amount = amount - x
# 批量运行改值
def batchRunThread(x):
    for i in range(1000000):
        changeValue(x)
# 创建2个线程
t1 = threading.Thread(target=batchRunThread, args=(5,), name = 'Thread1')
t2 = threading.Thread(target=batchRunThread, args=(15,), name = 'Thread2')
t1.start()
t2.start()
t1.join()
t2.join()
print(amount)

# 当 t1,t2线程 交替执行时,只要循环次数足够多,结果就可能被改乱
'''
原因：
原因是高级语言的一条语句执行在CPU执行是多个语句，即使是一个简单的计算：

amount = amount + x
CPU会执行下列运算：
1、计算amount + x，存入临时变量中；
2、将临时变量的值赋给amount。
'''